﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Logic;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Seguridad.Business;
using Crosland.Automotriz.Seguridad.Entity;
using System.Configuration;
using Crosland.Automotriz.Seguridad.ControlExeption;

namespace Crosland.Automotriz.Web.Seguridad
{
    public partial class wFrmGrupoNuevo : System.Web.UI.Page
    {

        string idSeguridad = ConfigurationManager.AppSettings["Seguridad"];
        clsOpcionLogic opcionLogic = new clsOpcionLogic();
        clsGrupoLogic grupoLogic = new clsGrupoLogic();
  
        List<T_SEG_OPCION> treeItems;
        List<T_SEG_OPCION> treeItemsChild;


        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack) {

                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", "JavaScript:confirmSubmitResult();", true);
                this.CargarArbol(opcionLogic.ObtenerOpcionesPorGrupo(0));
            }
        }




        protected void CargarArbol(List<int> list)
        {
            //this.TvListarOpciones.Nodes.Clear();

            treeItems = this.opcionLogic.listarTreaview();
            if (treeItems.Count > 0)
            {
                this.LlenarOpciones(null, null, this.tvOpciones, list);
            }

            this.tvOpciones.ExpandAll();
        }






        public void LlenarOpciones(int? codigoPadre, TreeNode node, TreeView tree, List<int> list)
        {
            treeItemsChild = treeItems.FindAll(delegate(T_SEG_OPCION item) { return (item.ID_PADRE == codigoPadre); });

            foreach (T_SEG_OPCION hijos in treeItemsChild)
            {
                TreeNode newNode = new TreeNode(hijos.DES_NOMBRE, hijos.ID_OPCION.ToString());

                if (list.Contains(hijos.ID_OPCION))
                {
                    newNode.Checked = true;
                }

                if (codigoPadre == null) tree.Nodes.Add(newNode);
                else node.ChildNodes.Add(newNode);
                this.LlenarOpciones(hijos.ID_OPCION, newNode, null, list);
            }
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            this.Grabar();
           

        }

        void listarNombreGrupo() {
            grupoLogic.listarGrupo2();
        }


        void Grabar()
        {
            
            try
            {
                bool flag = false;
                List<T_SEG_GRUPO> listaGrupo = new List<T_SEG_GRUPO>();
                if ( txtDscGrupo.Text == String.Empty || txtNombreGrupo.Text == String.Empty || cboEstado.SelectedIndex == 0 )
                {
                    string script = "ShowCreateAccountWindow7();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }
                else
                {
                  listaGrupo=grupoLogic.listarGrupo2();
                      foreach (T_SEG_GRUPO item in listaGrupo)
                        {
                            if (item.DES_NOMBRE.ToUpper() == txtNombreGrupo.Text.ToUpper())
                            {
                                flag = true;
                            }
                        }
                    if (flag)
	                       {
                               string scriptErrorDescripcion = "ShowCreateAccountWindow4();";
                               ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptErrorDescripcion, true);
	                        }
                    else
                    {
                                T_SEG_GRUPO grupo = new T_SEG_GRUPO();
                                grupo.DES_NOMBRE = txtNombreGrupo.Text;
                                grupo.DES_DESCRIPCION = txtDscGrupo.Text;
                                grupo.IND_ESTADO = cboEstado.Text.Substring(0, 1);
                                grupo.USR_CREACION = Session["User"].ToString();
                                grupo.USR_ACTUALIZO = "";

                                if (grupoLogic.GrabarGrupo(grupo, Tools.ObtenerNodoSeleccionados(this.tvOpciones)) != 0)
                                {
                                    string script = "ShowOK();";
                                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                                }
                                else
                                {
                                    string scriptError = "ShowCreateAccountWindow4();";
                                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptError, true);
                                }
                    
                    }  
                       
                    }
                   
                }

            catch (DataException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "Grabar");
                MensajesError(ex.Message, ex, "Grabar");
            }
            catch (Exception ex)
            {
                GuardarExceptionLog(ex.Message, ex, "Grabar");
                MensajesError(ex.Message, ex, "Grabar");
            }

        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Seguridad/wFrmGrupo.aspx?id="+idSeguridad);
        }

       

        protected void btnLimpiar_Click(object sender, EventArgs e)
        {
            txtDscGrupo.Text = "";
            txtNombreGrupo.Text = "";
        }

        private void GuardarExceptionLog(String msgUsu, Exception ex, String metError)
        {
            try
            {
                String msgReal, fhError, pagError, codUsu;
                msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
                codUsu = Session["User"].ToString();
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                int number = 0;
                for (int i = 0; i < trace.FrameCount; i++)
                {
                    System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                    number = sf.GetFileLineNumber();
                }
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                new Logg().ErrorLog(Server.MapPath("~/Logs/ErrorLog.csv"), msgUsu, msgReal, pagError, metError, codUsu, number);
            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "GuardarExceptionLog");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "GuardarExceptionLog");
            }

        }

        private void MensajesError(String msgUsu, Exception ex, String metError)
        {
            Crosland.Automotriz.Web.UserControl.MensajeError uc = (Crosland.Automotriz.Web.UserControl.MensajeError)Master.FindControl("ucErrorMensaje");
            String msgReal, fhError, pagError, codUsu;
            msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
            pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
            codUsu = Session["User"].ToString();
            fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
            int number = 0;
            for (int i = 0; i < trace.FrameCount; i++)
            {
                System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                number = sf.GetFileLineNumber();
            }
            uc.Errores(msgUsu, msgReal, fhError, pagError, metError, codUsu, number);
        }



    }
}